Scroll View被使用在某個超出螢幕的視圖,讓視圖可以滾動及縮放在Scroll View裡
@IBOutlet var scrollView: UIScrollView!
@IBOutlet var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
imageView = UIImageView(image: UIImage(named: "image.png"))
scrollView = UIScrollView(frame: view.bounds)
scrollView.backgroundColor = UIColor.black
scrollView.contentSize = imageView.bounds.size
scrollView.autoresizingMask = UIView.AutoresizingMask(rawValue: UIView.AutoresizingMask.RawValue(UInt8(UIView.AutoresizingMask.flexibleWidth.rawValue) | UInt8(UIView.AutoresizingMask.flexibleHeight.rawValue)))
scrollView.addSubview(imageView)
view.addSubview(scrollView)
}
上面程式碼設定了名叫image的ImageView。然後設定ScrollView的contentSize。contentSize就是設定滾動區域的大小,我們把它設定為imageView.bounds.size,就是跟圖像的大小ㄧ樣。最後設定ScrollView的autoresizingMask,最後一行程式碼就是當裝置旋轉時,會重新調整大小。
當打開App的時候會發現永遠會設置在左上角,因為視圖的原點就是(0,0),UIScrollView有contentOffset的屬性,可以重新設定原點。
scrollView.contentOffset = CGPoint(x: Int, y: Int)
縮放功能需要遵從UIScrollViewDelegate的procotol,然後實作viewForZoomingInScrollView()的method並回傳要縮放的視圖。
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return someView
}
接著要設定幾個property
// 是否可以按狀態列回到最上方
scrollView.scrollsToTop = false
// 縮放元件的預設縮放大小
scrollView.zoomScale = 1.0
// 縮放元件可縮小到的最小倍數
scrollView.minimumZoomScale = 0.5
// 縮放元件可放大到的最大倍數
scrollView.maximumZoomScale = 2.0
// 縮放元件縮放時是否在超過縮放倍數後使用彈回效果
scrollView.bouncesZoom = true
// 設置委任對象
scrollView.delegate = self
即可以實現縮放功能